package com.igorcrevar.rolloverchuck.utils; import com.badlogic.gdx.assets.AssetDescriptor; import com.badlogic.gdx.assets.AssetLoaderParameters; import com.badlogic.gdx.assets.AssetManager; import com.badlogic.gdx.assets.loaders.AsynchronousAssetLoader; import com.badlogic.gdx.assets.loaders.FileHandleResolver; import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.graphics.glutils.ShaderProgram; import com.badlogic.gdx.utils.Array; public class ShaderAssetLoader extends AsynchronousAssetLoader<ShaderProgram, ShaderAssetLoader.ShaderAssetLoaderParameter> { static public class ShaderAssetLoaderParameter extends AssetLoaderParameters<ShaderProgram> { public static String DefaultVertexShaderExtension = ".vsh"; public static String DefaultFragmentShaderExtension = ".fsh"; public static String BasePath = "shaders/"; public String vertexShaderExtension = DefaultVertexShaderExtension; public String fragmentShaderExtension = DefaultFragmentShaderExtension; public String basePath = BasePath; } public ShaderAssetLoader (final FileHandleResolver resolver) { super( resolver ); } @Override public void loadAsync(AssetManager manager, String fileName, FileHandle file, ShaderAssetLoaderParameter parameter) { } @Override public ShaderProgram loadSync(AssetManager manager, String fileName, FileHandle file, ShaderAssetLoaderParameter parameter) { String vse = parameter != null ? parameter.vertexShaderExtension : ShaderAssetLoaderParameter.DefaultVertexShaderExtension; String fse = parameter != null ? parameter.fragmentShaderExtension : ShaderAssetLoaderParameter.DefaultFragmentShaderExtension; String basePath = parameter != null ? parameter.basePath : ShaderAssetLoaderParameter.BasePath; final String vName = String.format("%s%s%s", basePath, fileName, vse); final String fName = String.format("%s%s%s", basePath, fileName, fse); final ShaderProgram shader = new ShaderProgram(resolve(vName), resolve(fName)); if (!shader.isCompiled()) { throw new IllegalStateException(shader.getLog()); } return shader; } @SuppressWarnings("rawtypes") @Override public Array<AssetDescriptor> getDependencies(String fileName, FileHandle file, ShaderAssetLoaderParameter parameter) { return null; } }